package com.zac.coroutine.algorithm.leetcode.others

/**
 * author zac
 * date 2025/8/4
 *258. 各位相加
 * 已解答
 * 简单
 * 相关标签
 * premium lock icon
 * 相关企业
 * 提示
 * 给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。返回这个结果。
 */
object AddDigits {
    @JvmStatic
    fun main(args: Array<String>) {

    }

    //数学题,不看题解死都不可能想得出来
    /**
     * 以678为例，
     *
     * 678 = 6 * 100       + 7 * 10    + 8
     *     = 6 * (99+1)    + 7 * (9+1) + 8       //下步把括号里的+1，提取到后面去
     *     = 6 * 99        + 7 * 9     + 8 + 6 + 7
     *     = 6 * 99        + 7 * 9     + 21    //这里已经计算完了6+7+8，然后用相同方法再次分解21
     *     = 6 * 99        + 7 * 9     + 2 * 9 + 1 + 2
     *     = 6 * 99        + 7 * 9     + 2 * 9 + 3    //这里计算完了2+1，可以看到3前面的都可以被9整除掉
     */
    fun addDigits(num: Int): Int {
        return (num - 1) % 9 + 1;
    }
}